package com.ruoyi.project.lease.car.service.impl;

import java.util.List;
import com.ruoyi.common.utils.DateUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ruoyi.project.lease.car.mapper.CarMapper;
import com.ruoyi.project.lease.car.domain.Car;
import com.ruoyi.project.lease.car.service.ICarService;
import com.ruoyi.common.utils.text.Convert;

/**
 * 车辆管理Service业务层处理
 * 
 * @author admin
 * @date 2021-12-31
 */
@Service
public class CarServiceImpl implements ICarService 
{
    @Autowired
    private CarMapper carMapper;

    /**
     * 查询车辆
     * 
     * @param carId 车辆管理主键
     * @return 车辆管理
     */
    @Override
    public Car selectCarByCarId(Long carId)
    {
        return carMapper.selectCarByCarId(carId);
    }

    /**
     * 查询车辆，过滤delFlag
     *
     * @param carId 车辆管理主键
     * @param delFlag 车辆删除标志
     * @return 车辆管理
     */
    @Override
    public Car selectCarByCarIdDelFlag(Long carId, int delFlag)
    {
        return carMapper.selectCarByCarIdDelFlag(carId, delFlag);
    }

    /**
     * 查询车辆管理列表
     * 
     * @param car 车辆管理
     * @return 车辆管理
     */
    @Override
    public List<Car> selectCarList(Car car)
    {
        return carMapper.selectCarList(car);
    }

    /**
     * 新增车辆管理
     * 
     * @param car 车辆管理
     * @return 结果
     */
    @Override
    public int insertCar(Car car)
    {
        car.setCreateTime(DateUtils.getNowDate());
        return carMapper.insertCar(car);
    }

    /**
     * 修改车辆管理
     * 
     * @param car 车辆管理
     * @return 结果
     */
    @Override
    public int updateCar(Car car)
    {
        car.setUpdateTime(DateUtils.getNowDate());
        return carMapper.updateCar(car);
    }

    /**
     * 批量删除车辆
     * 
     * @param carIds 需要删除的车辆管理主键
     * @return 结果
     */
    @Override
    public int deleteCarByCarIds(String carIds)
    {
        int del_flag = 0;
        Long[] carIdList = Convert.toLongArray(carIds);
        for (Long carId: carIdList) {
            if (carMapper.deleteCarByCarId(carId) > 0){
                del_flag += 1;
            }
        }
        return del_flag;
    }

    /**
     * 删除车辆信息
     * 
     * @param carId 车辆管理主键
     * @return 结果
     */
    @Override
    public int deleteCarByCarId(Long carId)
    {
        try {
            Car car = selectCarByCarId(carId);
            if (car.getCarStatus() == 0 || car.getCarStatus() == 2){
                return carMapper.deleteCarByCarId(carId);
            } else {
                return -1;
            }
        } catch (Exception e) {
            return -1;
        }
    }

    /**
     * 查询本月新增车辆数
     *
     * @return 新增车辆数
     */
    @Override
    public Long selectThisMonthNewCar() {
        String monthFirstStr = DateUtils.getMonthFirstDay();
        String monthLastStr = DateUtils.getMonthLastDay();
        return carMapper.selectThisMonthNewCar(monthFirstStr, monthLastStr);
    }
}
